<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        max = Math.max(1, 2, 3);
        console.log(max);


        //封装自己的Math
        var myMath = {
            PI: 3.141592653,
            max: function () {
                var max = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i]
                    }
                }
                return max
            }
        }

        console.log(myMath.max(1, 5, 9));
        console.log(Math.round(Math.random() * 100));

        //实现随机取两个数之间的任意数，包括两端
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        //随机点名
        var arr = ['张三', '李四', '王二麻子', '韩梅梅', '李明'];
        console.log(arr[getRandom(0, arr.length - 1)]);


        //日期对象
        var date = new Date();
        console.log(date);
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var dates = date.getDate();
        var array = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var day = date.getDay();
        console.log('今天是：' + year + '年' + month + '月' + dates + '日' + array[day]);


        //数组对象
        //字面量创建
        var arr = [];
        //利用new
        // var arr1 = new Array();  //创建了一个空数组
        // var arr1 = new Array(2);  //创建了一个长度为2的空数组
        var arr1 = new Array(2, 3);  //创建了一个数组，内有元素2和3
        //检测是否为数组
        //instanceof 运算符  可以用来检测是否为数组
        var arr2 = [];
        var obj = {};
        console.log(arr2 instanceof Array);
        console.log(obj instanceof Array);

        //Array.isArray() 内置对象 H5新增方法 ie9以上支持
        console.log(Array.isArray(arr2));
        console.log(Array.isArray(obj));

        //添加删除数组元素
        //push 返回值为新数组长度
        arr.push(1, 'pink', 3, 4);
        console.log(arr);
        //pop  返回值为删除的元素
        arr.pop();
        console.log(arr);
        //unshift 在开头添加 返回新数组长度
        arr.unshift('me');
        console.log(arr);
        //shift 在开头删除 返回删除的第一个元素
        // arr.shift();
        console.log(arr.shift());
        console.log(arr);

        //数组排序
        //1、翻转数组
        var arr = [1, 2, 3];
        arr.reverse();
        console.log(arr);
        //2、冒泡排序
        var arr = [3, 4, 7, 1];
        arr.sort(function (a, b) {
            return a - b;   //按照升序排列
        });
        console.log(arr);

        //获取数组索引
        //indexOf() 返回第一个匹配的索引 匹配失败返回-1
        var arr = [7, 5, 3, 1];
        console.log(arr.indexOf(5));
        //lastIndexOf() 返回最后一个匹配的索引

        //数组去重
        var arr = [1, 3, 4, 8, 3, 5, 4, 6, 8, 3];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) == -1) {
                newArr.push(arr[i]);
            }
        }
        console.log(newArr);

        //数组转换为字符串
        //toString()
        var arr = [1, 2, 3];
        console.log(arr.toString());
        //join(分隔符)
        console.log(arr.join('|'));


        //基本包装类型
        var str = 'andy';
        //js把简单数据类型包装成了复杂数据类型
        //var temp=new String('andy');
        //str = temp;
        //temp=null;
        var str = 'red and egg';
        //字符串不可变
        //指的是同一块内存的内容不会改变
        //实际上是str指向新的空间
        console.log(str.indexOf('e'));
        console.log(str.indexOf('e',3));
        
        //统计某个字符的所有出现位置及次数
        var str='abcoefoxyozzopp';
        var num=0;
        for(var i=0;i<str.length;i++){
            if(str.indexOf('o',i)!=-1){
                i=str.indexOf('o',i);
                console.log(i);
                num+=1;
            }
            else{
                break;
            }
        }
        console.log(num);

        //根据位置返回字符
        var str='andy';
        console.log(str.charAt(3));
        console.log(str[3]);
        //charAt和str[]等效
        //charCodeAt()返回ascll码
        console.log(str.charCodeAt(0));
        
        //统计字符串中出现最多的字符及次数
        var str='abcoefoxyozzopp';
        var o ={};
        for(var i=0;i<str.length;i++){
            var chars=str[i];
            if(o[chars]){
                o[chars]++;
            }
            else{
                o[chars]=1;
            }
        }
        console.log(o);
        var max=0;
        var ch='';
        for(var k in o){
            if(o[k]>max){
                max=o[k];
                ch=k;
            }
        }
        console.log(ch,max);
        //截取字符串
        var str='andy';
        console.log(str.substr(2,2));
        //替换字符串 只会替换第一个
        console.log(str.replace('a','b'));
        //转换为数组
        var str='red,pink,blue';
        console.log(str.split(','));
        
    </script>
</head>

<body>

</body>

</html>